//package com.rest.demo.Service;
//import com.rest.demo.repository.PostDTO;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.*;
//import org.springframework.stereotype.Service;
//import org.springframework.util.LinkedMultiValueMap;
//import org.springframework.util.MultiValueMap;
//import org.springframework.web.client.RestTemplate;
//import java.net.URI;
//import java.util.HashMap;
//import java.util.Map;
//
//
//@Service
//
//@Slf4j
//public class RequestURLServiceImpl {
//
//    //访问地址:http://t.weather.sojson.com/api/weather/city/{city}
//    private static final String Weatherurl = "http://t.weather.itboy.net/api/weather/city/";
//    private static final String Dymwurl = "http://api.wpbom.com/api/query.php?msg=";
//
//
//    @Autowired
//    private RestTemplate restTemplate; //此模板需要到config下配置
//
//    public String WeatherInfo(String id) {
//        String restTemplateForObject = restTemplate.getForObject(Weatherurl + id, String.class);
//        //也可以使用下面这一行写法直接将获取的数据封装到实体类中，前提是要有相对应的实体类
//        // User user = restTemplate.getForObject("https://www.XXX.com/", User.class);
//        log.info(restTemplateForObject);
//        return restTemplateForObject;
//    }
//
//    public String Dycmy(String id) {
//        String restTemplateForObject = restTemplate.getForObject(Dymwurl + id, String.class);
//        log.info(restTemplateForObject);
//        return restTemplateForObject;
//    }
//
//    ////getForObject发送JSON格式请求
//    public PostDTO getForObjectJSON() {
//        String url = "http://jsonplaceholder.typicode.com/posts/1";
//        PostDTO postDTO = restTemplate.getForObject(url, PostDTO.class);
//        log.info(postDTO.toString());
//        return postDTO;
//    }
//    //getForEntity()方法
//
//    public PostDTO getForEntityPoJo() {
//        String url = "http://jsonplaceholder.typicode.com/posts/1";
//        ResponseEntity<PostDTO> responseEntity = restTemplate.getForEntity(url, PostDTO.class);
//
//        PostDTO postDTO = responseEntity.getBody(); // 获取响应体
//        System.out.println("HTTP 响应body：" + postDTO.toString());
//
//        //以下是getForEntity比getForObject多出来的内容
//        HttpStatus statusCode = responseEntity.getStatusCode(); // 获取响应码
//        int statusCodeValue = responseEntity.getStatusCodeValue(); // 获取响应码值
//        HttpHeaders headers = responseEntity.getHeaders(); // 获取响应头
//
//
//        System.out.println("HTTP 响应状态：" + statusCode);
//        System.out.println("HTTP 响应状态码：" + statusCodeValue);
//        System.out.println("HTTP Headers信息：" + headers);
//
//
//        return postDTO;
//    }
//
//
//    //以数组的方式接收请求结果
//
//    public PostDTO[] postForObjectArray() {
//        String url = "http://jsonplaceholder.typicode.com/posts";
//        PostDTO[] postDTO = restTemplate.getForObject(url, PostDTO[].class);
//        log.info(String.valueOf(postDTO.length));//有100组
//        return postDTO;
//    }
//
//
//    //postForObject发送JSON格式请求
//    // 向指定的URL提交一个Post(帖子).
//    public PostDTO postForObjectW() {
//
//        // 要发送的数据对象
//        PostDTO postDTO = new PostDTO();
//        postDTO.setUserId(110);
//        postDTO.setTitle("zimug 发布文章");
//        postDTO.setBody("zimug 发布文章 测试内容");
//        String url = "http://jsonplaceholder.typicode.com/posts";
//        PostDTO rest = restTemplate.postForObject(url, postDTO, PostDTO.class);
//        System.out.println(rest);
//        return rest;
//    }
//
////postForLocation() 方法的使用
////    postForLocation的传参的类型、个数、用法基本都和postForObject()或postForEntity()一致。
////    和前两者的唯一区别在于返回值是一个URI。该URI返回值体现的是：用于提交完成数据之后的
////    页面跳转，或数据提交完成之后的下一步数据操作URI。
//    public URI postForLocation() {
//
//        // 请求地址
//        String url = "http://jsonplaceholder.typicode.com/posts";
//
//        PostDTO postDTO = new PostDTO();
//        postDTO.setUserId(110);
//        postDTO.setTitle("zimug 发布文章");
//        postDTO.setBody("zimug 发布文章 测试内容");
//
//        // 发送post请求，并输出结果
//        URI uri = restTemplate.postForLocation(url,postDTO);
//        System.out.println(uri);
//        return uri;//结果http://jsonplaceholder.typicode.com/posts/101
//    }
//
//    //postForObject模拟表单数据提交
////    提交x-www-form-urlencoded格式的数据
//    public String postForObjectForm() {
//
//        // 请求地址
//        String url = "http://jsonplaceholder.typicode.com/posts";
//
//
//        // 请求头设置,x-www-form-urlencoded格式的数据
//        HttpHeaders headers = new HttpHeaders();
//        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
//
//        //提交参数设置
//        MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
//        map.add("title", "zimug 发布文章第二篇");
//        map.add("body", "zimug 发布文章第二篇 测试内容");
//
//        // 组装请求体
//        HttpEntity<MultiValueMap<String, String>> request =
//                new HttpEntity<MultiValueMap<String, String>>(map, headers);
//
//        // 发送post请求，并打印结果，以String类型接收响应结果JSON字符串
//        String result = restTemplate.postForObject(url, request, String.class);
//        System.out.println(result);
//        return result;
//    }
//
//
//
//
//
//
//
//
////postForEntity()方法
//
//    public Map<String, Object> postForEntity() {
//
//        String url = "http://jsonplaceholder.typicode.com/posts";
//
//        // 要发送的数据对象
//        PostDTO postDTO = new PostDTO();
//        postDTO.setUserId(110);
//        postDTO.setTitle("zimug 发布文章");
//        postDTO.setBody("zimug 发布文章 测试内容");
//
//        // 发送post请求，并输出结果
//        ResponseEntity<String> responseEntity
//                = restTemplate.postForEntity(url, postDTO, String.class);
//        String body = responseEntity.getBody(); // 获取响应体
//        System.out.println("HTTP 响应body：" + postDTO.toString());
//
//        //以下是postForEntity比postForObject多出来的内容
//        HttpStatus statusCode = responseEntity.getStatusCode(); // 获取响应码
//        int statusCodeValue = responseEntity.getStatusCodeValue(); // 获取响应码值
//        HttpHeaders headers = responseEntity.getHeaders(); // 获取响应头
//        //数据封装为Map
//        Map<String, Object> map = new HashMap<>();
//        map.put("statusCode", statusCode);
//        map.put("statusCodeValue", statusCodeValue);
//        map.put("Headers信息", headers);
//
//
//        System.out.println("HTTP 响应状态：" + statusCode);
//        System.out.println("HTTP 响应状态码：" + statusCodeValue);
//        System.out.println("HTTP Headers信息：" + headers);
//        return map;
//    }
//
//    //使用占位符号传参的几种方式
//
//    public PostDTO postForObjectParameter() {
//        String url = "http://jsonplaceholder.typicode.com/{1}/{2}";
//        PostDTO postDTO = restTemplate.getForObject(url, PostDTO.class, "posts", 1);
//        return postDTO;
//    }
//
//
//    //使用占位符号传参的几种方式
//
//    public PostDTO postForObjectParameter2() {
//        String url = "http://jsonplaceholder.typicode.com/{type}/{Id}";
//        String type = "posts";
//        int Id = 3;
//        PostDTO postDTO = restTemplate.getForObject(url, PostDTO.class, type, Id);
//
//        return postDTO;
//    }
//
//
//    //我们也可以使用 map 装载参数
//    public PostDTO postForObjectParameter3() {
//        String url = "http://jsonplaceholder.typicode.com/{type}/{Id}";
//        Map<String, Object> map = new HashMap<>();
//        map.put("type", "posts");
//        map.put("Id", 4);
//        PostDTO postDTO = restTemplate.getForObject(url, PostDTO.class, map);
//
//        return postDTO;
//    }
//
//


//public PostTest(){
//RestTemplate template = new RestTemplate();
//        String url = "http://192.168.2.40:8081/channel/channelHourData/getHourNewUserData";
//        // 封装参数，千万不要替换为Map与HashMap，否则参数无法传递
//        MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<String, Object>();
//        paramMap.add("dt", "20180416");
//
//        // 1、使用postForObject请求接口
//        String result = template.postForObject(url, paramMap, String.class);
//        System.out.println("result1==================" + result);
//
//        // 2、使用postForEntity请求接口
//        HttpHeaders headers = new HttpHeaders();
//        HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(paramMap,headers);
//        ResponseEntity<String> response2 = template.postForEntity(url, httpEntity, String.class);
//        System.out.println("result2====================" + response2.getBody());
//
//        // 3、使用exchange请求接口
//        ResponseEntity<String> response3 = template.exchange(url, HttpMethod.POST, httpEntity, String.class);
//        System.out.println("result3====================" + response3.getBody());
//
//        }

//}
//
